﻿ #define  _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

//写⼀个猜数字游戏
//游戏要求：
//1. 电脑⾃动⽣成1~100的随机数
//2. 玩家猜数字，猜数字的过程中，根据猜测数据的⼤⼩给出⼤了或⼩了的反馈，直到猜对，游戏结束

//rand函数：生成随机数
//rand函数的使⽤需要包含⼀个头⽂件是：stdlib.h
//rand函数是对⼀个叫“种⼦”的基准值进⾏运算⽣成的随机数。
#include<stdlib.h>
//利用time函数和srand函数生成由当前时间决定的随机数
#include<time.h>

//int main()
//{
//	srand((unsigned int)time(NULL));
//
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//
//	return 0;
//}

//生成a~b的随机数    a + rand() % (b - a + 1);

//menu()
//{
//	printf("***********************\n");
//	printf("****** 1. play ********\n");
//	printf("****** 0. exit ********\n");
//	printf("***********************\n");
//}
//
//game()
//{
//	int r = 66 + rand() % (666 - 66 + 1);
//	int guess = 0;
//	while (1)
//	{
// 		printf("开始挑战：\n");
//		scanf("%d", &guess);
//		if (guess == r)
//		{
//			printf("恭喜你，猜对了\n");
//			break;
//		}
//		if (guess < r)
//		{
//			printf("猜小了\n");
//		}
//		if (guess > r)
//		{
//			printf("猜大了\n");
//		}
//	}
//}
//
//int main()
//{
//	srand((unsigned int)time(NULL));
//	int input = 0;
//
//	do
//	{
//		menu();
//		printf("请选择：\n");
//		scanf("%d", &input);
//
//		switch (input)
//		{
//		case 1:
//			game();
//			break;
//		case 0:
//			printf("游戏结束\n");
//			break;
//		default:
//			printf("选择错误，请重新选择\n");
//			break;
//		}
//	} while (input);
//
//	return 0;
//}

//加入次数限制,且自行选择

//menu()
//{
//	printf("***********************\n");
//	printf("****** 1. play ********\n");
//	printf("****** 0. exit ********\n");
//	printf("***********************\n");
//}
//
//game()
//{
//	int r = 66 + rand() % (666 - 66 + 1);
//	int guess = 0;
//	int count = 0;//挑战次数
//
//	printf("请输入您的挑战次数\n");
//	scanf("%d", &count);
//	while (count)
//	{
//		printf("开始挑战：\n");
//		scanf("%d", &guess);
//		if (guess == r)
//		{
//			printf("恭喜你，猜对了\n");
//			break;
//		}
//		else if (guess < r)
//		{
//			printf("猜小了\n");
//		}
//		//else (guess > r)
//		//{
//		//	printf("猜大了\n");
//		//}
//		//条件判断语句的最后一种情况else后不用标注情况
//		else
//		{
//			printf("猜大了\n");
//		}
//		count--;
//	}
//	if (count == 0)
//	{
//		printf("你失败了，正确值是:%d\n", r);
//	}
//}
//
//int main()
//{
//	srand((unsigned int)time(NULL));
//	int input = 0;
//
//	do
//	{
//		menu();
//		printf("请选择：\n");
//		scanf("%d", &input);
//
//		switch (input)
//		{
//		case 1:
//			game();
//			break;
//		case 0:
//			printf("游戏结束\n");
//			break;
//		default:
//			printf("选择错误，请重新选择\n");
//			break;
//		}
//	} while (input);
//
//	return 0;
//}

//一维数组的输入和输出

//int main()
//{
//	int arr[10];
//	//输入
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	//输出
//	int j = 0;
//	for (j = 0; j < 10; j++)
//	{
//		printf("%d ", arr[j]);
//	}
//	return 0;
//}

//二维数组的输入输出
//int main()
//{
//	int arr[3][5];
//	int i = 0;
//	//输入
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			scanf("%d", &arr[i][j]);
//		}
//	}
//	//输出
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//	}
//	return 0;
//}

//练习1：多个字符从两端移动，向中间汇聚
//编写代码，演⽰多个字符从两端移动，向中间汇聚

//int main()
//{
//	char arr1[] = "welcome to CHINA!";
//	char arr2[] = "*****************";
//
//	int left = 0;
//	int right = strlen(arr1) - 1;
//
//	printf("%s\n", arr2);
//	while(left <= right)
//	{
//		Sleep(1000);
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		left++;
//		right--;
//		printf("%s\n", arr2);
//	}
//	return 0;
//}

//练习2：⼆分查找
//在⼀个升序的数组中查找指定的数字n，很容易想到的⽅法就是遍历数组，但是这种⽅法效率⽐较低。
//⽐如我买了⼀双鞋，你好奇问我多少钱，我说不超过300元。你还是好奇，你想知道到底多少，我就让
//你猜，你会怎么猜？你会1，2，3，4...这样猜吗？显然很慢；⼀般你都会猜中间数字，⽐如：150，然
//后看⼤了还是⼩了，这就是⼆分查找，也叫折半查找。

//int main()
//{
//	int arr[] = { 0,1,2,3,4,5,6,7,8,9 };
//	int left = 0;
//	int right = sizeof(arr)/ sizeof(arr[0]-1);//要减1才是最后一个元素的下标
//	int key = 6;//要找的数
//	int mid = 0;//中间值
//	int find = 0;//判断是否找到
//
//	while (left <= right)
//	{
//		mid = (left + right) / 2;
//		if (arr[mid] > key)
//		{
//			right = mid - 1;
//		}
//		else if (arr[mid] < key)
//		{
//			left = mid + 1;
//		}
//		else
//		{
//			find = 1;
//			break;
//		}
//	}
//	if (find = 1)
//	{
//		printf("找到了，下标是：%d", mid);
//	}
//	else
//	{
//		printf("未找到");
//	}
//	return 0;
//}

//写⼀个加法函数，完成2个整型变量的加法操作

//int Add(unsigned int a, unsigned int b)
//{
//	unsigned int c = a + b;
//	return c;
//}
//
//int Add(unsigned int a, unsigned int b)
//{
//	return a + b;
//}
//
//int main()
//{
//	unsigned int num1 = 0;
//	unsigned int num2 = 0;
//	//输入
//	scanf("%d %d", &num1, &num2);
//	//调用函数
//	int r = Add(num1, num2);
//	printf("%d\n", r);
//	return 0;
//}

